/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * modifyRes.java
 *
 * Created on 19 Φεβ 2012, 3:09:19 μμ
 */
package handax.GUI;

import handax.controller.DBManager;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Μιχάλης
 */
public class modifyRes extends javax.swing.JFrame {
    
    //αναφορά τύπου Admin
    private Admin root;
    
    //Δημιουργία DBManager για την επικοινωνία με την βάση
    DBManager db=new DBManager();
    
    //Ορισμός ενός Vector με Strings για αποθήκευση των ονομασιών
    //των εστιατορίων
    private Vector<String> names=new Vector<String>();
                 
    //Ορισμός ενός Vector με Strings για αποθήκευση των διευθύνσεφν
    //των εστιατορίων
    private Vector<String> address=new Vector<String>();
                 
    //Ορισμός ενός Vector με Strings για αποθήκευση των περιοχών
    //των εστιατορίων   
    private Vector<String> areas=new Vector<String>();
                 
    //Ορισμός ενός Vector με Strings για αποθήκευση των τηλεφώνων
    //των εστιατορίων
    private Vector<String> phones=new Vector<String>();
                 
    //Ορισμός ενός Vector με Strings για αποθήκευση των κατηγοριών
    //των εστιατορίων
    private Vector<String> cat=new Vector<String>();
    
    
    /** Creates new form modifyRes */
    public modifyRes() {
        initComponents();
        
        //απενεργοποίηση κουμπιού εισαγωγής
        importButton.setEnabled(false);
        
        //απενεργοποίηση κουμπιού τροποποίησης
        modifyButton.setEnabled(false);
        
        //απενεργοποίηση κουμπιού διαγραφής
        deleteButton.setEnabled(false);        
        
        
        //εκτέλεση της insertRows() για
        //να εμφανιστεί ο πίνακας με τα διαθέσιμα
        //εστιατόρια προς διαγραφή
        insertRows();
    }
    
    //ορισμός του αρχικού παραθύρου
    public void setRoot(Admin root){
        this.root=root;
    }
    
    //μέθοδος για εκκαθάριση των δεδομένων των Vector 
    //για ανανέωση του πίνακα
    public void clearData(){
        
        //εκκαθάριση των ονομασιών
        names.clear();
        
        //εκκαθάριση διευθύνσεων
        address.clear();
        
        //εκκαθάριση περιοχών
        areas.clear();
        
        //εκκαθάριση τηλεφώνων
        phones.clear();
        
        //εκκαθάριση κατηγοριών
        cat.clear();
        
        
    }

    //μέθοδος όπου εμφανίζει τα διαθέσιμα εστιατόρια
    //στον πίνακα
    public void insertRows(){
           
        try{
            
                //ορισμός ενός μοντέλου τύπου DefaultTableModel
                //το οποίο δεν είναι editable
                DefaultTableModel model=new DefaultTableModel(){
                        
                        @Override
                        public boolean isCellEditable(int row, int column) {
                        //όλα τα κελιά μη-επεξεργάσιμα
                        return false;
                        }
                };
                
                 //Συσχέτιση αυτού του μοντέλου με τον πίνακα
                 jTable1.setModel(model);
                 
                 
        
                //επανάληψη για να προστεθούν τα στοιχεία όλων των εστιατορίων 
                //στους αντίστοιχους vectors
        for(int i=0;i<db.retrieveAllRests().size();i++){
        
                //προσθήκη των ονομασιών στον Vector για τις ονομασίες
                names.add(db.retrieveAllRests().get(i).getRestName());
                
                //προσθήκη των διευθύνσεων στον Vector για τις διευθύνσεις
                address.add(db.retrieveAllRests().get(i).getAddress());
                
                //προσθήκη των περιοχών στον Vector για τις περιοχές
                areas.add(db.retrieveArea(db.retrieveAllRests().get(i).getArea()).getDescr());
                
                //προσθήκη των τηλεφώνων στον Vector για τις διευθύνσεις
                phones.add(db.retrieveAllRests().get(i).getPhone());
                
                //προσθήκη των κατηγοριών στον  Vector για τις κατηγορίες
                cat.add(db.retrieveCategory(db.retrieveAllRests().get(i).getCategory()).getDescr());
        
        }   
        
        //Προσθήκη στο μοντέλο που ορίσα πιο πάνω
        //μίας στήλης με τίτλο Ονομασία και με δεδομένα
        //τα ονόματα του Vector names
        model.addColumn("Ονομασία",names);
        
        //Προσθήκη στο μοντέλο που ορίσα πιο πάνω
        //μίας στήλης με τίτλο Διεύθυνση και με δεδομένα
        //τις διευθύνσεις του Vector address
        model.addColumn("Διεύθυνση",address);
        
        //Προσθήκη στο μοντέλο που ορίσα πιο πάνω
        //μίας στήλης με τίτλο Περιοχή και με δεδομένα
        //τις περιοχές του Vector areas
        model.addColumn("Περιοχή",areas);
        
        //Προσθήκη στο μοντέλο που ορίσα πιο πάνω
        //μίας στήλης με τίτλο Τηλέφωνο και με δεδομένα
        //τα τηλέφωνα του Vector phones
        model.addColumn("Τηλέφωνο",phones);
        
        //Προσθήκη στο μοντέλο που ορίσα πιο πάνω
        //μίας στήλης με τίτλο Κατηγορία και με δεδομένα
        //τις κατηγορίες του Vector cat
        model.addColumn("Κατηγορία",cat);
        
        }catch (NullPointerException ex){
            JOptionPane.showMessageDialog(new JFrame(), ex.getCause());
        }
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        headerPanel = new javax.swing.JPanel();
        headerLabel = new javax.swing.JLabel();
        menuPanel = new javax.swing.JPanel();
        importButton = new javax.swing.JButton();
        modifyButton = new javax.swing.JButton();
        deleteButton = new javax.swing.JButton();
        backButton = new javax.swing.JButton();
        dataPanel = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        clearButton = new javax.swing.JButton();
        selectModifyButton = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(handax.HandaxApp.class).getContext().getResourceMap(modifyRes.class);
        setTitle(resourceMap.getString("Form.title")); // NOI18N
        setName("Form"); // NOI18N

        headerPanel.setName("headerPanel"); // NOI18N

        headerLabel.setIcon(resourceMap.getIcon("headerLabel.icon")); // NOI18N
        headerLabel.setText(resourceMap.getString("headerLabel.text")); // NOI18N
        headerLabel.setName("headerLabel"); // NOI18N

        javax.swing.GroupLayout headerPanelLayout = new javax.swing.GroupLayout(headerPanel);
        headerPanel.setLayout(headerPanelLayout);
        headerPanelLayout.setHorizontalGroup(
            headerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(headerLabel)
        );
        headerPanelLayout.setVerticalGroup(
            headerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(headerLabel)
        );

        menuPanel.setBackground(resourceMap.getColor("menuPanel.background")); // NOI18N
        menuPanel.setName("menuPanel"); // NOI18N

        importButton.setText(resourceMap.getString("importButton.text")); // NOI18N
        importButton.setName("importButton"); // NOI18N

        modifyButton.setText(resourceMap.getString("modifyButton.text")); // NOI18N
        modifyButton.setName("modifyButton"); // NOI18N

        deleteButton.setText(resourceMap.getString("deleteButton.text")); // NOI18N
        deleteButton.setName("deleteButton"); // NOI18N

        backButton.setText(resourceMap.getString("backButton.text")); // NOI18N
        backButton.setName("backButton"); // NOI18N
        backButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                backButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout menuPanelLayout = new javax.swing.GroupLayout(menuPanel);
        menuPanel.setLayout(menuPanelLayout);
        menuPanelLayout.setHorizontalGroup(
            menuPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(menuPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(menuPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(backButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(deleteButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(modifyButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(importButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        menuPanelLayout.setVerticalGroup(
            menuPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(menuPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(importButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(modifyButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(deleteButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(backButton)
                .addContainerGap(374, Short.MAX_VALUE))
        );

        dataPanel.setName("dataPanel"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jTable1.setName("jTable1"); // NOI18N
        jScrollPane1.setViewportView(jTable1);

        clearButton.setText(resourceMap.getString("clearButton.text")); // NOI18N
        clearButton.setName("clearButton"); // NOI18N
        clearButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                clearButtonActionPerformed(evt);
            }
        });

        selectModifyButton.setText(resourceMap.getString("selectModifyButton.text")); // NOI18N
        selectModifyButton.setName("selectModifyButton"); // NOI18N
        selectModifyButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                selectModifyButtonActionPerformed(evt);
            }
        });

        jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N

        javax.swing.GroupLayout dataPanelLayout = new javax.swing.GroupLayout(dataPanel);
        dataPanel.setLayout(dataPanelLayout);
        dataPanelLayout.setHorizontalGroup(
            dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, dataPanelLayout.createSequentialGroup()
                .addGroup(dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 725, Short.MAX_VALUE)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 725, Short.MAX_VALUE))
                .addContainerGap())
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, dataPanelLayout.createSequentialGroup()
                .addGap(291, 291, 291)
                .addGroup(dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(selectModifyButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 187, Short.MAX_VALUE)
                    .addComponent(clearButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(267, 267, 267))
        );
        dataPanelLayout.setVerticalGroup(
            dataPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, dataPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 19, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 341, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(clearButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(selectModifyButton)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(headerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGroup(layout.createSequentialGroup()
                .addComponent(menuPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(dataPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(headerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(menuPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(dataPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void selectModifyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectModifyButtonActionPerformed
                
            //έλεγχος αν έχει επιλεχθεί εστιατόριο προς τροποποίηση
            //αν δεν έχει επιλεχθεί
            if(jTable1.getSelectedRow()==-1){
                //Προτρεπτικό μήνυμα
                JOptionPane.showMessageDialog(new JFrame(), "Πρέπει να επιλέξετε ένα εστιατόριο");
            }
            
            //αν έχει επιλεχθεί
            else {
                
                //Δημιουργία παραθύρου εισαγωγής ενημερωμένων στοιχείων
                modifyRes2 a=new modifyRes2();
               
               
                //Συμπλήρωση των στοιχείων του επόμενο παραθύρου
                //με τα υπάρχον στοιχεία του επιλεγμένου εστιατορίου
                a.setNameTextField(names.get(jTable1.getSelectedRow()));
                a.setAddressTextField(address.get(jTable1.getSelectedRow()));
                a.setAreaComboBox(db.retrieveAllRests().get(jTable1.getSelectedRow()).getArea());
                a.setPhoneTextField(phones.get(jTable1.getSelectedRow()));
                a.setCategoryCombobox(db.retrieveAllRests().get(jTable1.getSelectedRow()).getCategory());
                a.setInfoTextField(db.retrieveAllRests().get(jTable1.getSelectedRow()).getInfo());
                a.setDescrTextField(db.retrieveAllRests().get(jTable1.getSelectedRow()).getDescr());
                a.setPriceComboBox(db.retrieveAllRests().get(jTable1.getSelectedRow()).getPrice());
                a.setImageLabel(db.retrieveAllRests().get(jTable1.getSelectedRow()).getPhoto());
                
                //συσχέτιση της επιλεγμένης σειράς με το επόμενο παράθυρο
                a.setSelectedRow(jTable1.getSelectedRow());
             
                //ορισμός αυτού του παραθύρου ως αρχικό του επομένου
                a.setRoot(this);
                
                //ορισμός του επόμενου παραθύρου ως ορατό
                a.setVisible(true);
                
                //ορισμός αυτού του παραθύρου ως μη ορατό
                setVisible(false);
            }
    }//GEN-LAST:event_selectModifyButtonActionPerformed

    private void backButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_backButtonActionPerformed
        
        //ενεργοποίησε το αρχικό παράθυρο
        root.setVisible(true);
        
        //κατέστρεψε τον εαυτό σου
        dispose();
    }//GEN-LAST:event_backButtonActionPerformed

    private void clearButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearButtonActionPerformed
        
        //Καθαρισμός επιλεγμένης σειράς
        jTable1.clearSelection();
        
    }//GEN-LAST:event_clearButtonActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(modifyRes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(modifyRes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(modifyRes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(modifyRes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new modifyRes().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton backButton;
    private javax.swing.JButton clearButton;
    private javax.swing.JPanel dataPanel;
    private javax.swing.JButton deleteButton;
    private javax.swing.JLabel headerLabel;
    private javax.swing.JPanel headerPanel;
    private javax.swing.JButton importButton;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JPanel menuPanel;
    private javax.swing.JButton modifyButton;
    private javax.swing.JButton selectModifyButton;
    // End of variables declaration//GEN-END:variables
}
